// characters模板
class User {
  // 传入mongoose对象
  constructor(mongoose) {
    this.mongoose = mongoose
    this.Schema = mongoose.Schema
    // CharactersInfo
    this.user = new this.Schema({
      id: Number,              // 什么内容的(比如某张cos图)的id
      account: Number,
      passWord: String,
      name: String,
      school: String,
      class: String,
      date: Date,        // 创建时间
      priaseNumber: Number,    // 点赞数
      priasePeople: Array,
      province: String,
      city: String,
      imgUrl: String,
      intro: String
    })
    this.modal = this.mongoose.model('User', this.user)
  }
  // 返回查询结果
  // @paras1 查询的id 
  getUser(id) {
    // 根据id查询评论 时间排序前8条
    return this.modal.find({ id: id })
  }
  // 增加删除 评论 
  // @paras1 增加的id 评论内容
  insertUser(body) {
    var subComment = new this.modal({
      id: Math.random() * 100000000000000000,              // 什么内容的(比如某张cos图)的id
      account: body.account,
      passWord: body.passWord,
      date: new Date(),        // 创建时间
      priaseNumber: 0,    // 点赞数
      priasePeople: [],
      name: body.name,
      school: body.school,
      class: body.class,
      province: body.province,
      city: body.city,
      imgUrl: body.imgurl,
      intro: body.intro,
    })
    return subComment.save((err, data) => {
      if (err) { console.log(err) }
      else { return true }
    })
  }
  // @paras1 删除的id
  delSubComment(id) {
    // findAndModify强调原子性 也就是获取然后增加 这类很好 自然速度不如update快
    return this.modal.deleteOne({ id: id }, (err, data) => {
      if (err) { console.log(err) }
      else { return null }
    })
  }
  // 评论点赞 在该评论的priasePeople中加入点赞id
  // @paras1 点赞评论的id
  // @paras2 点赞者的id
  priase(id, priaseId) {
    return this.modal.updateOne({ id: id, priasePeople: { $ne: priaseId } }, { $push: { priasePeople: priaseId }, $inc: { priaseNumber: 1 } }, (err, data) => {
      if (err) { console.log(err) }
      else {
        return null
      }
    })
  }
  // 取消点赞
  cancelPriase(Id, priaseId) {
    return this.modal.updateOne({ Id: Id }, { $pull: { priasePeople: priaseId }, $inc: { priaseNumber: -1 } }, (err, data) => {
      if (err) { console.log(err) }
      else { return null }
    })
  }
}
module.exports = User

